package io.esirong.eye.lifecycle;

import androidx.fragment.app.Fragment;
import io.esirong.eye.Screen;

/**
 * Fragment管理
 * Created by 黄嵘才(HuangRc) on 2019/10/8.
 */
public class FragmentsManager {

    private Screen mScreen;

    /**
     * 在一个基类里跟踪所有的Fragment的生命周期
     * <在Fragment的setUserVisibleHint中调用></>
     *
     * @param fragment 被监督的fragment
     */
    void trackOnsetUserVisibleHint(Fragment fragment) {
        // 如果它已经呈现在用户面前，它就是打开了，
        if (fragment.getUserVisibleHint()) {
            //当前页面进入
            setEnter(fragment);
        } else {
            // 唯有存在，才有消去，所谓离开，只不过是不在关注
            if (fragment.isVisible() && fragment.isAdded()) {
                //当前页面离开
                setLeave(fragment);
            } else {
                //还没有被展示在用户页前
            }
        }
    }

    /** 当前页面进入 */
    void setEnter(Fragment fragment) {
        mScreen.onEnter(fragment);
    }

    /** 当前页面离开 */
    void setLeave(Fragment fragment) {
        mScreen.onLeave(fragment);
    }
}
